-
Notifications
You must be signed in to change notification settings - Fork 146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Cloning Refactor #735
Cloning Refactor #735
Conversation
Metem machines ignore the bonus genetic damage.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CL isn't all "add" some of it is "tweak"
Lamia don't exist so that CL entry makes no sense
teach a man to fish and he eats for a day; give him fish and he eats for life |
THEY DO IN MY HEART, SHUT UP. |
Uncloneable now hooks into an AttemptCloningEvent, and cancels it, while also handing it a specific cancellation message. It also ignores the event if the CloningPod was a MetempsychosisMachine. In the future, x-Waveform Misalignment is going to cancel the AttemptCloningEvent if it's a MetempsychosisMachine. |
People choose unclonable exactly because they don't wanna be metemed, why take away that right from them? |
Right... |
Signed-off-by: VMSolidus <[email protected]>
THIS WAS LAST UPDATED 2 WEEKS AGO. PLEASE FOR THE LOVE OF GOD REVIEW THIS. |
I've been making some improvements to the system for "Readability", namely by splitting off shittons of checks and cleanups into separate private functions. Which, when that caused issues with the CloningSystem.cs file being so very long and bloated, I then split it into CloningSystem.cs and CloningSystem.Utility.cs, the latter of which contains a body of the majority of all of CloningSystem's private functions. I notably did not include FetchAndSpawnMob in the Utilities file, because it's still a significant part of the "Main Body" of the cloning system, and is kept on the same page to maintain the logical "Flow" of the system. |
EnsureComp<SpeechComponent>(uid); | ||
EnsureComp<DamageForceSayComponent>(uid); | ||
EnsureComp<EmotingComponent>(uid); | ||
EnsureComp<MindContainerComponent>(uid); | ||
EnsureComp<SSDIndicatorComponent>(uid); | ||
RemComp<ReplacementAccentComponent>(uid); | ||
RemComp<MonkeyAccentComponent>(uid); | ||
RemComp<SentienceTargetComponent>(uid); | ||
RemComp<GhostTakeoverAvailableComponent>(uid); | ||
_tag.AddTag(uid, "DoorBumpOpener"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It gets bigger every time I look at it... There needs to be a better solution.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The only other alternative I can think of is to use the method that BuildAMimicWorkshop calls, but that method has a significant weakness in that it CANNOT be used with an Abstract or NoSpawn entity, so whatever "Reference Entity" is used to workshop all the "These are components a player character requires", must itself be a totally valid entity to spawn. Even then it won't work for Removing components, so we'd be bringing in an awful solution to replace 5 EnsureComps at most.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could... Technically add a trio of ComponentRegistries to the ClonePodComponent? CopyComponents, EnsureComponents, RemoveComponents?
Co-authored-by: DEATHB4DEFEAT <[email protected]> Signed-off-by: VMSolidus <[email protected]>
8mb.video-wbK-wUTb9MPB.mp4I have just now completed my ingame testing and bugfixing, and have now verified that the new Cloning System works. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Making everything around Psionic, is really making me angry.
I WANT SCIENCE BACK, normal bluespace fucking science.
And EPI just a side of it!
aaa
anyway, code gud on my side, Cvars are nice.
both variants are literally reincarnation machines that operate on souls (i.e. psyches). defibs are a preexisting mechanic you can use if you don't want psionics |
Description
Since Cloning code is effectively abandonware by it's original codeowners, and I was the last person in this entire game to update it, I am technically the codeowner of Cloning. And by extension, it's also my responsibility to maintain the Cloning code. I've been putting this off for awhile due to how busy I've been with other projects, but since I'm now waiting on all my other refactors to be reviewed, I decided to finally sit down and comprehensively refactor Cloning.
In addition to massive substantial code cleanup(Cloning machines no longer run on Frametime for one!), here's most of the changes.
Media
New gore sprites for the Metem machine, because it can now have gore mode.
Changelog
🆑